1718B - Fibonacci Strings - CodeForces Solution


greedy implementation math number theory *2000

Please click on ads to support us..

C++ Code:

/*
    Mayoeba Yabureru
*/
#include<bits/stdc++.h>
using namespace std;

long long k , fib [300] , did [300];

int main()
{
    fib [0] = 1 , fib [1] = 1;
    for ( int i = 2 ; i <= 80 ; i ++ ) fib [i] = fib [ i - 1 ] + fib [ i - 2 ];

    //for ( int i = 0 ; i <= 50 ; i ++ ) cout << ' ' << i << ' ' << fib [i] << endl;

    int T;
    cin >> T;
    while ( T -- )
    {
        cin >> k;
        vector < pair < long long , int > > v;
        long long sum = 0;
        for ( int i = 0 ; i < k ; i ++ )
        {
            int x;
            cin >> x;
            sum += x;
            v . push_back ( { x , 0 } );
        }

        long long lim = 0 , summ = 0;
        for ( int i = 0 ; i < 80 ; i ++ )
        {
            summ += fib [i];
            lim = i;
            if ( summ >= sum ) break;
        }
        if ( summ != sum )
        {
            cout << "NO" << endl;
            continue;
        }

        int f = 0;
        for ( int i = lim ; i >= 0 ; i -- )
        {
            sort ( v . rbegin () , v . rend () );
            for ( int j = 0 ; j < k ; j ++ )
            {
                if ( v [j] . second ) continue;
                if ( v [j] . first >= fib [i] )
                {
                    v [j] . first -= fib [i];
                    for ( int z = 0 ; z < k ; z ++ ) v [z] . second = 0;
                    v [j] . second = 1;
                    break;
                }
            }
        }
        for ( int i = 0 ; i < k ; i ++ )
        {
            if ( v [i] . first ) f = 1;
        }
        if ( f ) cout << "NO" << endl;
        else cout << "YES" << endl;
    }
}









Comments

Submit
0 Comments
More Questions

349A - Cinema Line
47A - Triangular numbers
1516B - AGAGA XOOORRR
1515A - Phoenix and Gold
1515B - Phoenix and Puzzle
155A - I_love_username
49A - Sleuth
1541A - Pretty Permutations
1632C - Strange Test
673A - Bear and Game
276A - Lunch Rush
1205A - Almost Equal
1020B - Badge
1353A - Most Unstable Array
770A - New Password
1646B - Quality vs Quantity
80A - Panoramix's Prediction
1354B - Ternary String
122B - Lucky Substring
266B - Queue at the School
1490A - Dense Array
1650B - DIV + MOD
1549B - Gregor and the Pawn Game
553A - Kyoya and Colored Balls
1364A - XXXXX
1499B - Binary Removals
1569C - Jury Meeting
108A - Palindromic Times
46A - Ball Game
114A - Cifera